The Internet of Things (IoT) is a network of interrelated objects configured for gathering and exchanging data. Data is gathered using any combination of electronics, software, sensors or actuators. The gathered data is exchanged over a network interface configured for communicating over the Internet. Each of the objects is assigned a unique identifier, such as an Internet Protocol (IP) address. The objects may include physical devices, computing devices, digital machines, mechanical machines, vehicles, household appliances, or any of various combinations thereof. Alternatively or additionally, the objects may include animals, plants, or people that are equipped with sensors and network interfaces. In fact, using the IoT approach, any object equipped with an on-off switch may be connected to the Internet. Some illustrative examples of objects include smartphones, coffee makers, washing machines, refrigerators, headphones, lamps, radios, televisions, laptop computers, desktop computers, tablets, wearable devices, jet engines, oil drilling rigs, automobiles, trucks, trains, doors, access gates, livestock, and agricultural machinery.
A multitude of practical applications exist for interconnected objects. For example, assume that an individual is driving to an important meeting. The vehicle has access to the individual's calendar, and is able to use information about the date and time of the meeting to determine the best route to take. If heavy traffic is encountered, the vehicle may automatically initiate a text message to other meeting participants notifying them of the delay. Likewise, an interconnected clock radio may be configured for notifying a coffee maker to start brewing coffee as soon as the alarm function of the clock radio is triggered. Similarly, an office copy machine may keep track of paper and ink toner levels, and automatically re-order these items when supplies are running low.
In many IoT scenarios, analytic tasks are often based on simple rule comparisons. For instance, assume that an infant's body is equipped with a temperature sensor and a communications interface for automatically sending streaming messages including instantaneous sensed temperature over the Internet on a periodic or repeated basis over time. The sensed temperature may be incorporated into a time series of streamed messages that includes other items of sensed data for the infant in addition to body temperature. For purposes of illustration, these other items may include a sensed heart rate, a sensed breathing rate, a sensed ambient temperature, a sensed ambient humidity level, a sensed geographic position, and sensed audio information. It is desired to generate and send an alert to an infant's parents when the body temperature of the infant exceeds 100 degrees Fahrenheit for at least five minutes, or when the sensed audio information exceeds a predetermined level for at least ten seconds, or if a change in geographic position of greater than one meter is detected.
The foregoing scenario raises several technical challenges. A number of rules may need to be applied to the streaming messages, and a high data throughout for the sensed temperature and audio information needs to be achieved. In many real-world applications, several rules to thousands of rules may need to be contemporaneously applied to each streaming message. The streaming messages may occur a very high throughput, possibly involving a million data points or more per second. Likewise, the time series may include a large number of dimensions in the sense that each message may include a multiplicity of different data attributes. Different types of comparisons may need to be made, such as value comparisons versus spatial comparisons. Moreover, in some situations, the rules may change dynamically.
It is difficult to build a rule engine that indexes a multiplicity of rules where the rules encompass differing levels of complexity. One category of existing rule engines is organized into a plurality of levels, where each level is associated with a corresponding attribute. Thus, it takes a constant amount of time to compare the multiplicity of rules to a received message in order to locate a subset of rules of the multiplicity of rules that are applicable to the received message. This topology only supports value comparisons, and is not suitable when the value range of an attribute is large, occupying too much space in the rule engine. The space cost increases exponentially with increases in the number of attributes. There is a high cost for performing dynamic rule updates for attributes near upper hierarchical levels of the rule engine.
Another category of existing rule engine provides a content-based communication service using a content-based network. A content-based network is an overlay network that includes routers for performing specialized routing and forwarding functions. This approach may be used to perform different types of comparisons, and large numbers of attributes are supported. However, there is a very high latency when complicated routing functions need to be performed by the specialized content-based network. Moreover, this approach is very inefficient when a massive number of rules are similar but not identical.
Existing rule engine operations, such as pattern match and Discrete Fourier Transformation (DFT), are complicated and not suited for computation sharing. Load balancing approaches are challenging to implement because different rules have different computational complexities. A simple rule should not be associated with the same price as a complex rule, nor should all complex rules be associated with the same price. Accordingly, pricing each of the rules appropriately is a difficult task to perform. Thus, there exists a need to overcome at least one of the preceding deficiencies and limitations of the related art.